package template;

class PerformingDog extends Dog implements Performs{
    @Override
    public void Speak() {
        System.out.println("woof!");
    }

    @Override
    public void sit() {
        System.out.println("Sitting");
    }
    public void reproduce(){}
}
class Robot implements Performs{
    @Override
    public void Speak() {
        System.out.println("Click!");
    }

    @Override
    public void sit() {
        System.out.println("Clank!");
    }
    public void oilChange(){}
}

/********************************************************************/
class Communicate{
    public static <T extends Performs> void perform(T perfomer){
        perfomer.Speak();
        perfomer.sit();
    }
}
/********************************************************************/

public class DogsAndRobots {
    public static void main(String[] args){
        PerformingDog d = new PerformingDog();
        Robot r = new Robot();
        Communicate.perform(d);
        Communicate.perform(r);
    }
}
